package com.myserver.util;

import java.io.*;

/**
 * @author
 * wxg
 */
public class TxtUtil {
    /**
     * 读取txt文件
     * @param path
     * 文件路径
     * @return
     */
    public StringBuilder readTxt(String path){
        return readTxt2(path,"gbk");
    }

    /**
     * 读取txt文件
     * @param path
     * 文件路径
     * @param encoding
     * 文件编码
     * @return
     */
    public StringBuilder readTxt(String path,String encoding){
        return readTxt2(path,encoding);
    }
    private StringBuilder readTxt1(String path){
        //判断文件是否存在
        File file = new File(path);
        if (!file.exists()) {
            return null;
        }
        try {
            Reader reader = new FileReader(path);//Reader : 字符流
            BufferedReader br = new BufferedReader(reader);//BufferedReader : 缓冲输入流，效率高
            StringBuilder sb = new StringBuilder();//StringBuilder : 效率比String高，非线程安全，StringBuffer是线程安全的。
            //存在中文乱码问题
            String str;
            while ((str = br.readLine())!=null){
                sb.append(str).append("\r\n");
            }
            reader.close();
            br.close();
            return sb;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    private StringBuilder readTxt2(String path,String encoding){
        //判断文件是否存在
        File file = new File(path);
        if (!file.exists()) {
            return null;
        }
        try {
            InputStream is = new FileInputStream(path);//文件字节输入流
            InputStreamReader isr = new InputStreamReader(is,encoding);//InputStreamReader : 字符输入流，指定编码
            BufferedReader br = new BufferedReader(isr);//缓冲字符流
            StringBuilder sb = new StringBuilder();
            String str;
            while ((str = br.readLine())!=null){
                sb.append(str).append("\r\n");
            }
            br.close();
            isr.close();
            is.close();
            return sb;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
    public void writeTxt(String text,String path){
        writeTxt(text,path,false,"gbk");
    }
    public void writeTxt(String text,String path,boolean append){
        writeTxt(text,path,append,"gbk");
    }
    public void writeTxt(String text,String path,boolean append, String encoding) {
        //判断文件是否存在
        File file = new File(path);
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
            //以指定编码的方式写文件,并选择是否追加
            OutputStream os = new FileOutputStream(path, append);
            OutputStreamWriter osw = new OutputStreamWriter(os, encoding);
            BufferedWriter bw = new BufferedWriter(osw);
            bw.write(text);
            bw.newLine();
            bw.close();
            osw.close();
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
